Imports Microsoft.VisualBasic



Namespace Persistencia.ModuloAdministracion

    Public Class ControladorPersistencia

#Region "Atributos"

        Private Shared instance As ControladorPersistencia
        Private query As String
        Private BD As Persistencia.ModuloAdministracion.bd

#End Region

        Public Sub New()
            BD = Persistencia.ModuloAdministracion.bd.getInstance
        End Sub

#Region "getInstance"
        'Patron Singleton 
        Public Shared Function getInstance() As ControladorPersistencia
            If instance Is Nothing Then
                instance = New ControladorPersistencia
            End If
            Return instance
        End Function
#End Region

#Region "insertar"

        Public Sub insertarPresupuestoSubProyecto(ByVal psp As presupuestosubproyecto)
            Dim queryPresupuestoSubProyecto As String

            queryPresupuestoSubProyecto = "insert into presupuestosubproyecto (nombresubproyecto,descripcionsubproyecto,observaciontaller,notasalcliente,notasventas,fkpresupuesto,itemaprovado) values('" _
            + psp.nombreSubProyecto + "','" + psp.descripcionSubProyecto + "','" + psp.observacionTaller + "','" + psp.notasAlCliente + "','" + psp.notasVentas + "'," + psp.fkPresupuesto + ",'" + psp.itemaprovado + "')"
            BD.EjecutarSinRetorno(queryPresupuestoSubProyecto)
        End Sub

        Public Sub insertarPresupuestoTemporal(ByVal pres As Presupuesto)
            Dim queryPresupuesto As String

            queryPresupuesto = "insert into presupuesto (fecha,condventa,atencion,garantias,entrega,plano,neto,iva,total,gastosgeneralesporcentaje,utilidadporcentajes,utilidadmaterialesporcentaje,descuentoporcentaje,fkcliente,fkvendedor,requisicion,estado,estimadosenor,precios,condiciones,plazoentrega,lugarentrega,validezoferta) values ('" + pres.fecha + "','" + pres.condVenta + "','" + _
                                       pres.atencion + "','" + pres.garantias + "','" + pres.entrega + "','" + pres.plano + "','" + pres.neto.ToString + "','" + pres.iva.ToString + "','" + pres.total.ToString + "','" + pres.gastosgeneralesporcentaje.ToString + "','" + pres.utilidadporcentaje.ToString + "','" + pres.utilidadmateriales.ToString + "','" + pres.descuentoPorcentaje.ToString + "','" + CStr(pres.fkCliente) + "','" + CStr(pres.fkvendedor) + "','" + pres.requisicion + "','P','" + pres.estimadosenor + "','" + _
                                       pres.precio + "','" + pres.condicion + "','" + pres.plazoentrega + "','" + pres.lugarentrega + "','" + pres.validezoferta + "')"

            BD.EjecutarSinRetorno(queryPresupuesto)
        End Sub

        Public Sub insertarMaterialPresupuestoSubproyecto(ByVal mat As presupuestosubproyectomaterial, ByVal supProyID As Integer)
            Dim queryMat As String
            queryMat = "insert into presupuestosubproyectomaterial (cantidad,descripcion,valorkg,fksubproyecto,fkmaterial,neto,iva) values (" + CStr(mat.cantidad) + ",'" + mat.descripcion + "'," + CStr(mat.valorKg) + "," + CStr(mat.fksubProyecto) + "," + CStr(mat.fkmaterial) + "," + CStr(mat.neto) + "," + CStr(mat.iva) + ")"
            BD.EjecutarSinRetorno(queryMat)
        End Sub

        Public Sub insertarActividadPresupuestoSubproyecto(ByVal act As presupuestosubproyectoactividad, ByVal supProyID As Integer)
            Dim queryActividad As String
            queryActividad = "insert into presupuestosubproyectoactividad (cantidadhoras,valorhorahombre,factorhh,prioridadtarea,descripcion,fksubproyecto,fkactividad," + _
                                     "neto,iva) values (" + CStr(act.cantidadHora) + "," + CStr(act.valorHoraHombre) + "," + CStr(act.factorHH) + "," + CStr(act.prioridadTarea) + ",'" + act.descripcion + "'," + _
                                     CStr(supProyID) + "," + CStr(act.fkactividad) + "," + CStr(act.neto) + "," + CStr(act.iva) + ")"
            BD.EjecutarSinRetorno(queryActividad)
        End Sub

        Public Sub insertarOrdenTrabajo(ByVal ot As OrdenTrabajo)
            Dim query As String = "insert into ordentrabajo (descripcion,fkempleado,fkpresupuesto,fecha) values ('" + CStr(ot.Descripcion) + "','" + CStr(ot.FkTrabajador) + "'," + _
                                    CStr(ot.FkPresupuesto) + ",'" + CStr(ot.Fecha) + "')"
            BD.EjecutarSinRetorno(query)
        End Sub

        Public Sub insertarMaterialTemporal(ByVal material As Material)

            Dim query As String = "insert into materialespera (nombre,estado,codmaterial,descripcionformal,descripcioninformal,stockminimo,reffamilia) values ('" + CStr(material.Nombre) + "','P','" + _
                                   CStr(material.Codigo) + "','" + CStr(material.DescripcionFormal) + "','" + material.DescripcioninFormal + "','" + CStr(material.STOCKMINIMO) + "'," + material.RefFAmilia + ")"
            BD.EjecutarSinRetorno(query)

        End Sub

#End Region

#Region "Eliminar"

        Public Sub EliminarMaterialPresupuestoSubproyecto(ByVal id As Integer)
            query = "delete from presupuestosubproyectomaterial where id = " + CStr(id)
            BD.EjecutarSinRetorno(query)
        End Sub

        Public Sub EliminarActividadPresupuestoSubproyecto(ByVal id As Integer)
            query = "delete from presupuestosubproyectoactividad where id = " + CStr(id)
            BD.EjecutarSinRetorno(query)
        End Sub


#End Region

#Region "Actualizar"

        Public Sub ActualizarPresupuestoSubproyecto(ByVal id As String, ByVal aprovado As String)
            query = "update presupuestosubproyecto set itemaprovado ='" + aprovado + "' where id ='" + id + "'"
            BD.EjecutarSinRetorno(query)
        End Sub

        Public Sub ActualizarEstadoPrespuesto(ByVal idPresu As String)
            Dim query As String = "update presupuesto set estado = 'A' where id =" + idPresu
            BD.EjecutarSinRetorno(query)
        End Sub

        Public Sub ActualizarRequisicionItem(ByVal numReq As String, ByVal codMaterial As String, ByVal fkProv As String)
            query = "update itemrequisicion set estado ='A' where fkrequisicion =" + numReq + " and fkmaterial =" + codMaterial + "and fkproveedor='" + fkProv + "'"
            BD.EjecutarSinRetorno(query)
        End Sub

        Public Sub ActualizarRequisicion(ByVal numeroReq As String)
            Dim numeroItemReq As Integer
            Dim numeroItemReqP As Integer

            query = "select count(*) numerocuenta from itemrequisicion where fkrequisicion =" + numeroReq
            numeroItemReq = CInt(BD.EjecutarConRetorno(query).Item("numerocuenta").ToString())
            query = "select count(*) numerocuenta from itemrequisicion where estado = 'A' and fkrequisicion =" + numeroReq
            numeroItemReqP = CInt(BD.EjecutarConRetorno(query).Item("numerocuenta").ToString())

            If (numeroItemReq = numeroItemReqP) Then
                query = "update requisicion set estado='A' where id=" + numeroReq
                BD.EjecutarConRetorno(query)
            End If
        End Sub


#End Region

#Region "Funciones"

        Public Function obtenerCliente() As ArrayList
            Dim query As String = "select * from cliente"
            Return BD.obtenerCliente(query)
        End Function

        Public Function obtenerClienteID(ByVal id As String) As ArrayList
            Dim query As String = "select * from cliente where id =" + id
            Return BD.obtenerCliente(query)
        End Function

        Public Function obtenerEmpleado(ByVal rut As String) As ArrayList
            Dim query As String = "select * from empleado where rut ='" + rut + "'"
            Return BD.obtenerEmpleado(query)
        End Function

        Public Function obtenerEmpleado() As ArrayList
            Dim query As String = "select * from empleado"
            Return BD.obtenerEmpleado(query)
        End Function

        Public Function ObtenerPresupuesto() As ArrayList
            Dim query As String = "select * from presupuesto"
            Return BD.obtenerPresupuesto(query)
        End Function

        Public Function ObtenerPresupuestoID(ByVal id As String) As ArrayList
            Dim query As String = "select * from presupuesto where id =" + id
            Return BD.obtenerPresupuesto(query)
        End Function

        Public Function ObtenerUsuario() As ArrayList
            Dim query As String = "select * from usuariosistema"
            Return BD.ObtenerUsuario(query)
        End Function

        Public Function ObtenerDato(ByVal query As String) As Hashtable
            Return BD.EjecutarConRetorno(query)
        End Function

        Public Function ObtenerUltimoPresupuestoSubOProyecto() As Hashtable
            Dim query As String
            query = "select max(id) maxima from presupuestosubproyecto"
            Return BD.EjecutarConRetorno(query)
        End Function

        Public Function ObtenerGrupo(ByVal criterio As String) As ArrayList
            Dim query As String = "select * from grupousuarios where id=" + criterio
            Return BD.ObtenerGrupo(query)
        End Function

        Public Function obtenerSubProyectoCriterio(ByVal fkpresupuesto As String) As ArrayList
            Dim query As String = "select * from presupuestosubproyecto where fkpresupuesto =" + fkpresupuesto
            Return BD.obtenerSubProyectoCriterio(query)
        End Function

        Public Function obtenerUltimoPresupuesto() As Hashtable
            Dim query As String
            query = "select max(id) maxima from presupuesto"
            Return BD.EjecutarConRetorno(query)
        End Function

        Public Function ObtenerProveedor() As ArrayList
            Dim query As String = "select * from proveedor"
            Return BD.obtenerProveedor(query)
        End Function

        Public Function ObtenerFamilia() As ArrayList
            Dim query As String = "select * from familiamateriales"
            Return BD.ObtenerFamilia(query)
        End Function

        Public Function ObtenerMaterialStock(ByVal rutProv As String) As ArrayList
            Return BD.ObtenerMaterialStock(rutProv)
        End Function

        Public Function ObtenerMaterialProv(ByVal idProv As String) As ArrayList
            Dim query As String = "select * from materialespera where refproveedor='" + idProv + "'"
            Return BD.ObtenerMaterialProv(query)
        End Function

        Public Function ObtenerActividad() As ArrayList
            Dim query As String = "select * from actividad"
            Return BD.ObtenerActividad(query)
        End Function

        Public Function obtenerUltimoPresupuestoSubproyectoMaterial() As String
            Dim query As String = "select max(id) maxima from presupuestosubproyectomaterial"
            Return BD.EjecutarConRetorno(query).Item("maxima").ToString()
        End Function

        Public Function obtenerPresupuestoSubproyectoMaterial(ByVal fkSubPro As String)
            Dim query As String = "select * from presupuestosubproyectomaterial where fksubproyecto=" + fkSubPro
            Return BD.obtenerPresupuestoSubproyectoMaterial(query)
        End Function

        Public Function obtenerUltimoPresupuestoSubproyectoActividad() As String
            Dim query As String = "select max(id) maxima from presupuestosubproyectoactividad"
            Return BD.EjecutarConRetorno(query).Item("maxima").ToString()
        End Function

        Public Function obtenerActividadCriterio(ByVal nombreActividad As String) As ArrayList
            Dim query As String = "select * from actividad where nombre ='" + nombreActividad + "'"
            Return BD.ObtenerActividad(query)
        End Function

        Public Function obtenerPresupuestoSubproyectoActividad(ByVal fkSubPro As String)
            Dim query As String = "select * from presupuestosubproyectoactividad where fksubproyecto=" + fkSubPro
            Return BD.obtenerPresupuestoSubproyectoActividad(query)
        End Function

        Public Function ObtenerOrdenCompra() As ArrayList
            Dim query As String = "select * from ordencompra"
            Return BD.obtenerOrdenCompra(query)
        End Function

        Public Function ObtenerRequisicion() As ArrayList
            Dim query As String = "select * from requisicion"
            Return BD.ObtenerRequisicion(query)
        End Function

        Public Function ObtenerClientePresupuesto(ByVal idPresu As String) As String
            Dim query As String = "select fkcliente from presupuesto where id=" + idPresu
            Dim datoObtenido As String = BD.EjecutarConRetorno(query).Item("fkcliente").ToString
            Dim queryCliente As String = "select rznsocial from cliente where id =" + datoObtenido
            Return BD.EjecutarConRetorno(queryCliente).Item("rznsocial").ToString
        End Function

        Public Function ObtenerMaterial() As ArrayList
            Dim query As String = "select * from material"
            Return BD.obtenerMaterial(query)
        End Function


#End Region

    End Class
End Namespace